﻿using System;
using System.Collections.Generic;
using System.Linq;
using Crosland.Automotriz.Entidad;
using System.Data.SqlClient;
using System.Data.EntityClient;
using System.Data;


namespace Crosland.Automotriz.Data.Dao.Linq
{
    public class clsTH_Venta_Vehiculo_SeguroDAO
    {
        private readonly DM_CROSLAND_20130417Entities ContextoDeObjs = new DM_CROSLAND_20130417Entities();

        public bool Insertar(TH_VENTA_VEHICULO_SEGURO Obj)
        {
            try
            {
                ContextoDeObjs.AddObject("TH_VENTA_VEHICULO_SEGURO", Obj);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception)
            {
                return false;
            }
            return true;
        }

        public int Actualizar(int ID_VENTA_VEHICULO_SEGURO, int ID_FORMA_PAGO, int ID_BANCO, int ID_ENDOSO) 
        {
            using (DM_CROSLAND_20130417Entities ctx = new DM_CROSLAND_20130417Entities())
            {
                var stud = (from s in ctx.TH_VENTA_VEHICULO_SEGURO
                            where s.ID_VENTA_VEHICULO_SEGURO == ID_VENTA_VEHICULO_SEGURO
                            select s).FirstOrDefault();

                stud.ID_FORMA_PAGO = ID_FORMA_PAGO;
                stud.ID_BANCO = ID_BANCO;
                stud.ID_ENDOSO = ID_ENDOSO;

                int num = ctx.SaveChanges();
                return num;
            }
        }

        public int ActualizarEnviarSolicitud(int ID_VENTA_VEHICULO_SEGURO, string ID_USUARIO_SOLICITUD, string observacion)
        {
            using (DM_CROSLAND_20130417Entities ctx = new DM_CROSLAND_20130417Entities())
            {
                var stud = (from s in ctx.TH_VENTA_VEHICULO_SEGURO
                            where s.ID_VENTA_VEHICULO_SEGURO == ID_VENTA_VEHICULO_SEGURO
                            select s).FirstOrDefault();

                stud.FEC_SOLICITUD = DateTime.Now;
                stud.ID_USUARIO_SOLICITUD = ID_USUARIO_SOLICITUD;
                stud.DES_OBSERVACION_SOLICITUD = observacion;
                stud.ID_ESTADO = 41;//Pendiente de Aprobar

                int num = ctx.SaveChanges();
                return num;
            }
        }

        public int ActualizarEnviarRespuesta(int ID_VENTA_VEHICULO_SEGURO, string ID_USUARIO, string observacion, int tipoRespuesta)
        {
            using (DM_CROSLAND_20130417Entities ctx = new DM_CROSLAND_20130417Entities())
            {
                var stud = (from s in ctx.TH_VENTA_VEHICULO_SEGURO
                            where s.ID_VENTA_VEHICULO_SEGURO == ID_VENTA_VEHICULO_SEGURO
                            select s).FirstOrDefault();

                stud.FEC_APROBACION = DateTime.Now;
                stud.ID_USUARIO_APROBACION = ID_USUARIO;
                stud.DES_OBSERVACION_APROBACION = observacion;
                stud.ID_ESTADO = tipoRespuesta;

                int num = ctx.SaveChanges();
                return num;
            }
        }

        public int ObtenerUltimoID_LOCAL()
        {
            try
            {
                var resultado = ContextoDeObjs.TH_VENTA_VEHICULO_SEGURO.Select(a => a.ID_VENTA_VEHICULO_SEGURO).Max();
                return int.Parse(resultado.ToString());
            }
            catch (Exception)
            {
                return 0;
            }
        }

        public TH_VENTA_VEHICULO_SEGURO Seleccionar(int ID_VENTA_VEHICULO_SEGURO)
        {
            TH_VENTA_VEHICULO_SEGURO venta = new TH_VENTA_VEHICULO_SEGURO();
            try
            {
                var consulta = from c in ContextoDeObjs.TH_VENTA_VEHICULO_SEGURO
                               where c.ID_VENTA_VEHICULO_SEGURO == ID_VENTA_VEHICULO_SEGURO
                               select new
                               {
                                   c.ID_ORG_VTA,
                                   c.NRO_FACTURA,
                                   c.NRO_POSICION,
                                   c.FEC_REGISTRO,
                                   c.FEC_SOLICITUD,
                                   c.FEC_APROBACION,
                                   c.ID_ESTADO,
                                   c.ID_USUARIO_SOLICITUD,
                                   c.ID_FORMA_PAGO,
                                   c.ID_BANCO,
                                   c.ID_ENDOSO
                               };

                foreach (var myEntity in consulta.ToArray())
                {
                    venta.ID_ORG_VTA = myEntity.ID_ORG_VTA;
                    venta.NRO_FACTURA = myEntity.NRO_FACTURA;
                    venta.NRO_POSICION = myEntity.NRO_POSICION;
                    venta.FEC_REGISTRO = myEntity.FEC_REGISTRO;
                    venta.FEC_SOLICITUD = myEntity.FEC_SOLICITUD;
                    venta.FEC_APROBACION = myEntity.FEC_APROBACION;
                    venta.ID_ESTADO = myEntity.ID_ESTADO;
                    venta.ID_USUARIO_SOLICITUD = myEntity.ID_USUARIO_SOLICITUD;
                    venta.ID_FORMA_PAGO = myEntity.ID_FORMA_PAGO;
                    venta.ID_BANCO = myEntity.ID_BANCO;
                    venta.ID_ENDOSO = myEntity.ID_ENDOSO;
                }
            }
            catch (Exception)
            {
                return null;
            }
            return venta;
        }
    }
}
